import pandas as pd
import pymysql

'''
文件的读取
'''

# 读取csv文件
csv_data = pd.read_csv("data/my_csv.csv")
# 读取excel文件
excel_data = pd.read_excel("data/my_excel.xlsx")
# 读取txt文件
table_data = pd.read_table("data/my_table.txt")

'''
读取时的其他操作
'''

# 第一行不作为索引
csv_data = pd.read_csv("data/my_csv.csv", header=None)
# 选取单独的列作为索引
csv_data = pd.read_csv("data/my_csv.csv", index_col=['col1', 'col2'])
# 指定读取那一列
csv_data = pd.read_csv("data/my_csv.csv", usecols=['col1', 'col2'])
# 处理时间
csv_data = pd.read_csv("data/my_csv.csv", parse_dates=['col5'])
# 指定行数
csv_data = pd.read_csv("data/my_csv.csv", nrows=3)

'''
数据的写入
'''

# 写成csv文件,False就是索引不写入
# csv_data.to_csv("****", index=False)
# 写成excel
# csv_data.to_excel("****", index=False)
# 写程txt文件,sep是定义分割符
# csv_data.to_csv("****", sep='\t', index=False)

'''
Series
'''

# 定义Series
s = pd.Series(data=[100, 'a', {"name": "Jack"}],
              index=pd.Index(["ID", 20, 'third'], name="my_idx"),
              dtype='object',
              name='my_name')
# 获取值
print(s.values)
# 获取 索引
print(s.index)
# 获取 数据类型
print(s.dtype)
# 获取列名
print(s.name)
# 获取长度
print(s.shape)

'''
Pandas
'''

df = pd.DataFrame(data={'col_0': [1, 2, 3], 'col_1': list('abc'),
                        'col_2': [1.2, 1.3, 1.4]},
                  index=['row_%d' % i for i in range(3)])
# 获取第一列,只获取列的时候就是一个Series
print(df['col_2'])
# 获取第一二两列
print(df[['col_1', 'col_2']])
# 获取值
print(df.values)
# 获取 索引
print(df.index)
# 获取长度
print(df.shape)
# 返回数据类型
print(df.dtypes)

df = pd.read_csv('data/learn_pandas.csv')
# 获取前七列
df = df[df.columns[:7]]

# 前两行
df2 = df.head(2)
# 后两行
df3 = df.tail(2)
# 信息状况
df4 = df.info()
# 计算
df5 = df.describe()

print("------------------min------------------")
print(df.min())
print('------------------max------------------')
print(df.max())
print('------------------mean------------------')
print(df.mean())
print('------------------quantile------------------')
print(df.quantile(0.75))
print('------------------count------------------')
print(df.count())
print('------------------唯一------------------')
print(df['School'].unique())
print('不重复的数量', df['School'].nunique())
print('唯一值出现的频数')
print(df['School'].value_counts())

df_demo = df[['Gender', 'Transfer', 'Name']]
df_demo.drop_duplicates(['Gender', 'Transfer'])
df_demo.drop_duplicates(['Gender', 'Transfer'], keep='last')
